<?php
class EventoController extends BaseController
{
	public function init(){
		parent::init();
	}		

   	private function popularEvento($obj, $post){
    	$filter 		= new Zend_Filter_StripTags();
    	$obj->nm_evento = trim($filter->filter($post['nm_evento']));
    	$obj->ds_evento = trim($filter->filter($post['ds_evento']));
    	$obj->id_local  = (int) $post['id_local_evento'];
    	$obj->dt_inicial= UtilController::brDateUsDate(trim($filter->filter($post['dt_inicial'])));
    	$obj->dt_termino= UtilController::brDateUsDate(trim($filter->filter($post['dt_termino'])));
    	$obj->dt_inicio_inscricao= UtilController::brDateUsDate(trim($filter->filter($post['inicioInscricao'])));
    	$obj->dt_limite_inscricao= UtilController::brDateUsDate(trim($filter->filter($post['limiteInscricao'])));
    	return $obj;
   	}

   	function addAction(){
    	$this->view->linkManual = "/public/manual/manual_cadastro_evento.html";
    	$this->view->title 	= "Adicionar evento";
    	$evento = new Evento();
    	$local  = new LocalEvento();
		$this->view->action = 'add';
    	if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
			$evento=$this->popularEvento($evento, $this->_request->getPost());
			switch ($this->get_post_action('salvar_local', 'salvar_evento', 'excluir_registro')) {
				case 'excluir_registro':	
					$local->excluir($this->_request->getPost('excluir_registro', $this->view->idUsuario));	
					$this->view->currentTab=1;
					break;
				case 'salvar_local':
			        $this->view->currentTab=1;
					$local->populate($this->_request->getPost());
			        $local->salvar();
			        break;
			    case 'salvar_evento':
			    	if ($this->eventoValido($evento, 'insert')==true){
		        		$evento->salvar();
		        		$this->carregaTelaStatus( "Novo evento", "Cadatrado com sucesso!");
		        		return;			    		
			    	}
			        break;
			}    		
    	}	
    	$this->view->evento= $evento;
    	$this->view->local = $local;    	
    	$this->view->dadosConsulta = $local->buscar(null, null, null, 1, 1);
    	$this->render();
    }

	function editAction(){
		$this->view->linkManual = "/public/manual/manual_editar_evento.html";
		$this->view->title  	= "Alterar evento";
		$this->view->action 	= $this->view->baseUrl.'/evento/edit';
		$evento = new Evento();
		$local  = new LocalEvento();
		if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
			$id = (int)$this->_request->getPost('id_evento');
			$evento=$this->popularEvento($evento, $this->_request->getPost());
			$evento->id_evento=$id;
			switch ($this->get_post_action('salvar_local', 'salvar_evento', 'excluir_registro')) {
				case 'excluir_registro':	
					$local->excluir($this->_request->getPost('excluir_registro', $this->view->idUsuario));	
					break;
				case 'salvar_local':
					$this->view->currentTab=1;
					$local->populate($this->_request->getPost());
			        $local->salvar();
			        break;
			    case 'salvar_evento':
			    	if ($this->eventoValido($evento, 'update')==true){
		        		$evento->salvar();
		        		$this->carregaTelaStatus("Evento atualizado", "Evento alterado com sucesso!");
		        		return;		    		
			    	}
			        break;
			}    
		} else {
			$id = (int)$this->_request->getParam('id', 0);
			if ($id==0){
				$this->_redirect('/evento/add');
			}
			$evento->load($id);
			$local->load($evento->id_local);
		}
    	$this->view->evento= $evento;
    	$this->view->local = $local;    	
    	$this->view->dadosConsulta = $local->buscar(null, null, null, 1, 1);
    	$this->render();
	}

	function indexAction(){
		$this->view->linkManual = "/public/manual/manual_consulta_evento.html";
		$this->view->title  = "Eventos";
		$this->view->action = $this->view->baseUrl . '/evento/index';
		$this->view->nmEvento = "";
		$this->view->idLocal  = "";
    	$this->view->dadosConsulta = null;
    	if (strtolower($_SERVER['REQUEST_METHOD']) == 'get' && $this->_request->getParam('btConsultar')=='Consultar'){
       		$this->view->nmEvento = trim($this->filter->filter($this->_getParam('nmEvento')));
       		$this->view->idLocal  = (int)$this->_getParam('idLocal');
       		$evento = new Evento();
       		$this->view->dadosConsulta = $evento->buscar(null, $this->view->nmEvento, $this->view->idLocal, null, null, $this->_order, $this->_asc);
    		if ($evento->qtdReg == 0){
				$this->view->mensagem_alerta="Dados não encontrados para a pesquisa realizada.";
			}
    	}
        $this->render();
    }

	function excluirAction(){
		$this->view->linkManual = "/public/manual/manual_excluir_evento.html";
    	$id = (int)$this->_getParam('id');
    	$this->view->action 	= $this->view->baseUrl.'/evento/excluir';
		if ($id > 0){
			$evento = new Evento();
			$evento->excluir($id);
        	$this->carregaTelaStatus("Excluir evento", "Evento excluído com sucesso!");
            return;
		}
		$this->render();
	}

	private function carregaTelaStatus($operacao, $mensagem){
		$links = array( array('link'=>$this->view->baseUrl ."/evento/add" , 'descricao'=>"Cadastrar outro evento"),
                        array('link'=>$this->view->baseUrl ."/evento/index", 'descricao'=>"Listar os eventos válidos"));
        $this->_forward('status', 'util', null,
                       	array(	'operacao'=>$operacao,
                  		  		'mensagem'=>$mensagem,
                          		'links'   =>$links));
        return;			
	} 
	
	private function eventoValido($evento, $transacao){
    	$ret = FALSE;
    	$this->view->mensagem_erro=null;
    	$erro = $evento->validate($transacao);
    	if ($erro['erro']==1){
    		$this->view->mensagem_erro=$erro['mensagem'];
    	}else{
    		$ret = true;
    	}
    	return $ret;
    }
}